/**
 * Copyright &copy; 2013-2015 山东易科德软件有限公司   All rights reserved.
 */
package cn.net.ecode.modules.sys.service;

import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.net.ecode.common.service.TreeService;
import cn.net.ecode.modules.sys.dao.UserDictDao;
import cn.net.ecode.modules.sys.entity.UserDict;
import cn.net.ecode.modules.sys.utils.UserDictUtils;

/**
 * 用户字典管理Service
 * @author ThinkGem
 * @version 2015-07-27
 */
@Service
@Transactional(readOnly = true)
public class UserDictService extends TreeService<UserDictDao, UserDict> {

	/**
	 * 获取单条数据
	 * @param userDict
	 * @return
	 */
	public UserDict get(UserDict userDict) {
		return super.get(userDict);
	}
	
	/**
	 * 查询列表
	 */
	public List<UserDict> findList(UserDict userDict) {
		return super.findList(userDict);
	}
	
	/**
	 * 查询全部列表
	 * @return
	 */
	public List<UserDict> findAllList(UserDict userDict) {
		return dao.findAllList(userDict);
	}
	
	/**
	 * 获取当前节点下的启用列表
	 * @param userDict
	 * @return
	 */
	public List<UserDict> getEnabledList(UserDict userDict) {
		return dao.getEnabledList(userDict);
	}

	/**
	 * 保存数据（插入或更新）
	 */
	@Transactional(readOnly = false)
	public void save(UserDict userDict) {
		super.save(userDict);
		UserDictUtils.clearUserDictCache();
	}

	/**
	 * 保存数据（删除）
	 */
	@Transactional(readOnly = false)
	public void delete(UserDict userDict) {
		super.delete(userDict);
		UserDictUtils.clearUserDictCache();
	}

	/**
	 * 根据用户字典类型删除字典数据
	 */
	@Transactional(readOnly = false)
	public void deleteByUserDictType(UserDict userDict) {
		userDict.preUpdate();
		dao.deleteByUserDictType(userDict);
		UserDictUtils.clearUserDictCache();
	}

	/**
	 * 停用当前节点
	 */
	@Transactional(readOnly = false)
	public void disable(UserDict userDict) {
		dao.disable(userDict);
		UserDictUtils.clearUserDictCache();
	}

	/**
	 * 停用当前节点和子节点
	 */
	@Transactional(readOnly = false)
	public void disableByGroup(UserDict userDict) {
		dao.disableByGroup(userDict);
		UserDictUtils.clearUserDictCache();
	}

	/**
	 * 启用当前节点
	 */
	@Transactional(readOnly = false)
	public void enable(UserDict userDict) {
		dao.enable(userDict);
		UserDictUtils.clearUserDictCache();
	}

	/**
	 * 启用当前节点和子节点
	 */
	@Transactional(readOnly = false)
	public void enableByGroup(UserDict userDict) {
		dao.enableByGroup(userDict);
		UserDictUtils.clearUserDictCache();
	}
	
	/** 
	 * 获取子节点中最大的排序号
	 * @param userDict
	 * @return int  
	 */
	public int getMaxSort(UserDict userDict) {
		return dao.getMaxSort(userDict);
	}
	
	/** 
	 * 获取子节点最大的个数
	 * @param userDict
	 * @return int  
	 */
	public int getMaxSize(UserDict userDict) {
		return dao.getMaxSize(userDict);
	}
	
}